04 GPIO实验
按键实验 蜂鸣器实验
up的视频讲解: https://space.bilibili.com/1455872040
例程代码: 📥按键点灯实验代码
1 🔽 按键点灯实验
1.1 实验连接

1.2 实验原理

- 这里是按键电路 它直接连接芯片的
PA0引脚 - 当我们按下按键的时候 相当于 直接把PA0短接到3.3伏电源
- 这个高电平信号就输入进了IO口

- 然后进入到GPIO外设的输入部分 通过施密特触发器后存入输入寄存器中
- 然后 我们就可以使用
HAL_GPIO_ReadPin()函数 不断地去读这个位的值 - 如果这个值从零变到了1 就代表着按键按下

- 当调用
HAL_GPIO_WritePin()函数去控制这个引脚输出高电平的时候 BSRR对应的位就写为1 然后BSRR寄存器又将ODR寄存器对应位写为1- 接着ODR寄存器 控制
Output control输出控制电路让PMOS导通 NMOS管断开 - 从而让IO口输出高电平 然后将我们的灯点亮
1.3 CubeMX配置
PA0 GPIO_Input Pull-down,按下接3.3 V


PA1 GPIO_Output Push Pull,初始Low,Low速度即可

1.4 实验代码
全局
main()
while(1)里面
if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0) == 1)//按键按下
{
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,1);//黄灯亮
}
else
{
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,0);//黄灯灭
}
2 🌻 光照/温度 点灯实验
2.1 实验连接

2.2 实验原理

我们详细看下这个比较器 它内部包含两个运算放大器 的正极也叫同相端 负极也叫反相端
-
当同相端的电压大于反相端时 比较器就输出高电平 反之 当同相端小于反相端时 就输出低电平
-
同相端为AO点电压信号 由
光敏电阻分压得到 可以反应当前光照强度 -
反相端电压由电位器也就是我们
蓝色的滑阻决定
光敏/热敏 传感器阈值调调节
我们可以通过一字螺丝刀进行调节 up设计的原则是: 顺时钟减小 逆时针增大
- 逆时针增大光的阈值 需要更大的光才能把蓝色信号灯 点亮

- 当光照变强的时候 光敏电阻阻值减小
AO点电位减小 - 当AO点电位 小于
滑阻电位时 比较器就输出低电平 此时LED导通 LED被点亮 - up在输出简单 加了一个上拉电阻 这样比较器在没有输出的时候就默认为高电平
- 在光照强度大于 滑阻设定的阈值的时候就输出低电平并把灯点亮
2.3 CubeMX配置
我们可以复用按键点灯的配置
2.4 实验代码
我们可以复用按键点灯的代码
3 📢 按键启动蜂鸣器实验原理
3.1 实验连接

3.2 实验原理

-
电路很简单就是我们的IO口控制一个
三极管从而控制蜂鸣器工作 -
先简单认识一下三极管 三极管顾名思义有三个极
-
它们分别是
集电极基极发射极 -
其实你就可以把它看成一个按键开关 当基极比发射极大0.7V时 就相当于按下按键 此时集电极和发射极就 导通
-
所以我们将IO口连接蜂鸣器 然后让IO口输出高电平 就可以让蜂鸣器工作了
3.3 CubeMX配置
我们可以复用按键点灯的配置
3.4 实验代码
我们可以复用按键点灯的代码
✅实验验收与常见问题
分别记录按键松开/按下、传感器亮/暗时的输入电平,再决定程序判断0还是1。比较器DO是阈值结果,AO是连续变化的模拟电压,两者用途不同。
练习:把“按住才亮”改成“按一次翻转一次”。这时要识别边沿并去抖,不能在while里只要读到1就不停翻转。完整的事件处理思路见调试补充。